home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / smb_kb835732.nasl < prev    next >
Text File  |  2005-01-14  |  4KB  |  155 lines

  1. #
  2. # (C) Tenable Network Security
  3. #
  4.  
  5.  
  6. if(description)
  7. {
  8.  script_id(12209);
  9.  script_version("$Revision: 1.5 $");
  10.  if(defined_func("script_xref"))script_xref(name:"IAVA", value:"2004-A-0006");
  11.  
  12.  name["english"] = "Microsoft Hotfix for KB835732 (SMB check)";
  13.  
  14.  script_name(english:name["english"]);
  15.  
  16.  desc["english"] = "
  17. The remote host seems to be running a version of Microsoft OS 
  18. which is vulnerable to several flaws, ranging from  denial of service
  19. to remote code execution.  Microsoft has released a Hotfix (KB835732)
  20. which addresses these issues.
  21.  
  22. Solution : Install the Windows cumulative update from Microsoft
  23.  
  24. See also : http://www.microsoft.com/technet/security/bulletin/ms04-011.mspx
  25.  
  26. Risk factor : High";
  27.  
  28.  
  29.  script_description(english:desc["english"]);
  30.  
  31.  summary["english"] = "Checks for Microsoft Hotfix KB835732 by talking to the remote SMB service";
  32.  
  33.  script_summary(english:summary["english"]);
  34.  
  35.  script_category(ACT_GATHER_INFO);
  36.  
  37.  script_copyright(english:"This script is Copyright (C) 2004 Tenable Network Security");
  38.  family["english"] = "Windows";
  39.  script_family(english:family["english"]);
  40.  script_dependencies("cifs445.nasl");
  41.  script_require_ports(139,445);
  42.  exit(0);
  43. }
  44.  
  45. include("smb_nt.inc");
  46. function smb_neg_prot_gssapi(soc)
  47. {
  48.  local_var neg_prot, r;
  49.  
  50.  neg_prot = raw_string
  51.        (
  52.      0x00, 0x00, 0x00, 0xA4, 0xFF, 0x53,
  53.      0x4D, 0x42, 0x72, 0x00, 0x00, 0x00, 0x00, 0x08,
  54.      0x01, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  55.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  56.      0x4D, 0x0B, 0x00, 0x00, g_mlo, g_mhi, 0x00, 0x81,
  57.      0x00, 0x02
  58.      ) + "PC NETWORK PROGRAM 1.0" + raw_string(0x00, 0x02) +
  59.      "MICROSOFT NETWORKS 1.03" + raw_string(0x00, 0x02) + 
  60.      "MICROSOFT NETWORKS 3.0"  + raw_string(0x00, 0x02) + 
  61.      "LANMAN1.0" + raw_string(0x00, 0x02) + 
  62.      "LM1.2X002" + raw_string(0x00, 0x02) + 
  63.      "Samba" +     raw_string(0x00, 0x02) +
  64.      "NT LANMAN 1.0" + raw_string(0x00, 0x02) +
  65.      "NT LM 0.12" + raw_string(0x00);
  66.      
  67.      
  68.  send(socket:soc, data:neg_prot);
  69.  r = smb_recv(socket:soc, length:4000);
  70.  return r;
  71. }
  72.  
  73. function netbios(data)
  74. {
  75.  return raw_string(0,0,0,strlen(data) % 256) + data;
  76. }
  77.  
  78. function smb(blob, suffix)
  79. {
  80.  local_var len, tot_len;
  81.  len = strlen(blob);
  82.  tot_len = len + strlen(suffix);
  83.  
  84.   
  85.  
  86.  return raw_string(0xff, 0x53, 
  87.            0x4d, 0x42, 0x73, 0x00, 0x00, 0x00, 0x00, 0x08,
  88.            0x01, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  89.            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  90.            0x00, 0x00, 0x00, 0x00, g_mlo, g_mhi, 0x0c, 0xff,
  91.            0x00, 0x00, 0x00, 0x01, 0x40, 0x02, 0x00, 0x01,
  92.            0x00, 0x00, 0x00, 0x00, 0x00, len,  0x00, 0x00,
  93.            0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x80, tot_len,
  94.            0x00 ) + blob + suffix;
  95. }
  96.  
  97. function gssapi(data)
  98. {
  99.  return raw_string(0x60, 0x58,0x06,0xFF,0x06,0xFF,0x06,0x0F,0x05,0x0F,0x02,0xFF,0x06,0xFF,0xFF,0xFF,0xFF, 0x06,0x00,0x06,0x00,0x2A,0x00,0x00,0x00,0x0A,0x00,0x0A,0x00,0x20,0x00,0x00,0x00, 0x42,0x4C,0x49,0x4E,0x47,0x42,0x4C,0x49,0x4E,0x47,0x4D,0x53,0x48,0x4F,0x4D,0x45, 0x2A,0xFF,0x7F,0x74,0x6F,0xFF,0x0A,0x0B,0x9E,0xFF,0xE6,0x56,0x73,0x37,0x57,0x37, 0x0A,0x0B,0x0C);
  100. }
  101.  
  102. port = int(get_kb_item("SMB/transport"));
  103.  
  104. if ( ! port ) 
  105. {
  106.  port = 445;
  107.  soc  = 0;
  108.  if ( get_port_state(port) )
  109.  {
  110.   soc = open_sock_tcp(port);
  111.  }
  112.  if ( ! soc )
  113.  {
  114.   port = 139;
  115.   if ( ! get_port_state(port) ) exit(0);
  116.  }
  117. }
  118.  
  119.  
  120.  
  121.  
  122.  
  123. if ( ! soc ) soc = open_sock_tcp(port);
  124. if ( ! soc ) exit(0);
  125.  
  126. if ( port == 139 )
  127. {
  128.   name = kb_smb_name();
  129.   if ( ! name ) name = "*SMBSERVER";
  130.   r = smb_session_request(soc:soc,  remote:name); 
  131.   if (  ! r ) exit(0);
  132. }
  133.  
  134.  
  135. r = smb_neg_prot_gssapi(soc:soc);
  136. if (! r) exit(0);
  137.  
  138. data = netbios(data:smb(blob: gssapi(), suffix:unicode(data:"Windows") + unicode(data:"Nessus") + raw_string(0,0)));
  139.  
  140.  
  141.  
  142. send (socket:soc, data:data);
  143.  
  144. result = smb_recv(socket:soc, length:4096);
  145. if ( ! result ) exit(0);
  146. if ( strlen(result) < 13 ) exit(0);
  147.  
  148.  
  149. code = substr(result, 9,12);
  150. # 0x160000c0 -> vulnerable
  151. # 0x0d0000c0 -> patched
  152.  
  153. if ( "160000c0" >< hexstr(code) ) security_hole(port);
  154.  
  155.